#ifndef RP2SAMPLERINFORMATION_H
#define RP2SAMPLERINFORMATION_H

#include "Rp2System.h"

namespace Rp2
{
class SamplerInformation
{
public:
	enum Type
	{
        SAMPLER_1D,       // dimension 1
        SAMPLER_2D,       // dimension 2
        SAMPLER_3D,       // dimension 3
        SAMPLER_CUBE,     // dimension 2 (a set of 2D images)
        SAMPLER_PROJ,     // dimension 2
        MAX_SAMPLER_TYPES
	};

    // Construction and destruction.  The name, sampler type, and texture
    // unit are stored in the shader program files.  The dimension is
    // deduced from the sampler type.  The sampler unit is created when
    // loading a shader program.  The filter mode and wrap modes are specific
    // to a texture object and stored by such an object. 
	SamplerInformation(const std::string& rkName, Type eType,
		int iTextureUnit);
	~SamplerInformation();

    // Member read-only access.
    const std::string& GetName () const;
    Type GetType () const;
    int GetTextureUnit () const;
    int GetDimension () const;

private:
    std::string m_kName;
    Type m_eType;
    int m_iTextureUnit;
    int m_iDimension;
};

#include "Rp2SamplerInformation.inl"

}

#endif